我們在開發一款 APP 時,一定會需要用到切換頁面的功能,而在我們切換頁面的時候,也需要把頁面內處理的值傳給其他頁面使用!
那我們傳值的後其實有很多方法,其中一個就是這個 Protocol 傳值!
我們可以在一個 Swift 的文件開頭,新增一個 Protocol , 這個 Protocol 內有想要傳的型態 Function (Protocol 必須要寫在 Class 外面)
protocol AddTimeZone : AnyObject {
func addtimezone(addtimezone : String)
}
接著再新增一個變數存放這個 Protocol
weak var pushvalue : AddTimeZone?
到這邊我們就建立完成 Protocol 了,接下來我們來看看如何使用它!
下面以我做的 Clock App 為使用範例!
我在 TableView 裡點選 Cell 的時候,會把值放進 Protocol 裡
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
pushvalue?.addtimezone(addtimezone: timeZones[indexPath.row]) //放進 Protocol
self.navigationController?.popViewController(animated: true) //跳回主頁面
}
然後記得在原本 push 過去的 Action 打上存放 Protocol 的變數,來接收 Protocol 的值
nextVC.pushvalue = self
最後在主頁面的 Swift 直接使用 Protocol 的 Function 即可。
var timezones = [String]() //宣告一個陣列,可以存放 Protocol 裡面的值
func addtimezone(addtimezone : String) {
timezones.append(addtimezone)
tableview.reloadData()
}